package com.starrocks.controller;

import com.starrocks.common.Result;
import com.starrocks.task.TestDataGenerator;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;

/**
 * 测试数据控制器
 * 用于手动触发测试数据的更新和删除操作
 */
@Slf4j
@RestController
@RequestMapping("/api/test")
@ConditionalOnBean(TestDataGenerator.class)
public class TestDataController {

    @Autowired
    private TestDataGenerator testDataGenerator;

    /**
     * 手动更新测试数据（模拟增量同步）
     * 
     * @param deviceId 设备ID
     */
    @PostMapping("/update/{deviceId}")
    public Result<String> updateData(@PathVariable String deviceId) {
        try {
            testDataGenerator.updateTestData(deviceId);
            return Result.success("已触发数据更新：" + deviceId);
        } catch (Exception e) {
            log.error("更新测试数据失败", e);
            return Result.error("更新失败：" + e.getMessage());
        }
    }

    /**
     * 手动软删除测试数据（测试软删除同步）
     * 
     * @param deviceId 设备ID
     */
    @PostMapping("/delete/{deviceId}")
    public Result<String> deleteData(@PathVariable String deviceId) {
        try {
            testDataGenerator.softDeleteTestData(deviceId);
            return Result.success("已触发软删除：" + deviceId);
        } catch (Exception e) {
            log.error("软删除测试数据失败", e);
            return Result.error("软删除失败：" + e.getMessage());
        }
    }

    /**
     * 获取测试数据生成器状态
     */
    @GetMapping("/status")
    public Result<Map<String, Object>> getStatus() {
        Map<String, Object> status = new HashMap<>();
        status.put("enabled", true);
        status.put("description", "测试数据生成器正在运行");
        status.put("rate", "每秒1条");
        status.put("tip", "调用 POST /api/test/update/{deviceId} 可手动更新数据");
        return Result.success(status);
    }
}

